package br.com.DAO;

import java.util.ArrayList;
import java.util.List;

import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.parse.ParseException;
import com.parse.ParseObject;
import com.parse.ParseQuery;

import br.com.Bean.AulaBean;
import br.com.Bean.DisciplinaBean;
import br.com.Bean.UsuarioBean;

public class AulaDAO {

	/*
	 * Enviando meu JSON Gson gson = new Gson(); gson.toJson(lista);
	 */
	public List<AulaBean> buscaPeloIdDisciplina(String objectId) {
		// TODO Auto-generated method stub
		return null;
	}
	
	public void deleta(AulaBean aulaBean){
		 List<ParseObject> todos = null;
		 List<DisciplinaBean> listaTodos = new ArrayList<>();
		
		ParseQuery query = new ParseQuery("Aula");
		query.whereEqualTo("objectId", aulaBean.getId());
		 try {
				todos = query.find();
			} catch (ParseException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		 
		 if(todos != null){
			 for (ParseObject todo : todos) {
               AulaBean a = new AulaBean();
               	a.setId(todo.getObjectId());
               	todo.deleteInBackground();
               	System.out.println("DELETOU");
         //       listaTodos.add(d);
            }
		 }
	}

	public void salva(AulaBean aulaBean, DisciplinaBean disciplina) {
		// TODO Auto-generated method stub
		Gson gson = new Gson();
		ParseObject aula = new ParseObject("Aula");

		aula.put("conteudo", aulaBean.getConteudo());
		aula.put("data", aulaBean.getData());
		aula.put("observacao", aulaBean.getObservacao());

		aula.put("listaFaltosos", gson.toJson(aulaBean.getListaFaltosos()));
		aula.put("listaPresentes", gson.toJson(aulaBean.getListaPresentes()));
		aula.put("idDisciplina", disciplina.getId());
		aula.saveInBackground();
	}

	public List<AulaBean> listaTodos(DisciplinaBean disciplina) {
		List<ParseObject> todos = null;
		List<AulaBean> listaTodos = new ArrayList<>();
		List<UsuarioBean> listaFaltosos = new ArrayList<>();
		List<UsuarioBean> listaPresentes = new ArrayList<>();
		Gson gson = new Gson();

		ParseQuery query = new ParseQuery("Aula");
		query.whereEqualTo("idDisciplina", disciplina.getId());
		try {
			todos = query.find();
		} catch (ParseException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		if (todos != null) {
			for (ParseObject todo : todos) {
				AulaBean aula = new AulaBean();
				aula.setConteudo(todo.getString("conteudo"));
				aula.setData(todo.getDate("data"));
				aula.setId(todo.getObjectId());
				aula.setObservacao(todo.getString("observacao"));

				// Lista com alunos faltosos e presentes, recebendo JSON e convertendo em lista.
				listaFaltosos = gson.fromJson(todo.getString("listaFaltosos"),
						new TypeToken<List<UsuarioBean>>() {
						}.getType());
				
				listaPresentes = gson.fromJson(todo.getString("listaPresentes"),
						new TypeToken<List<UsuarioBean>>() {
						}.getType());
				
				
				for(int i = 0; i < listaFaltosos.size(); i++){
					System.out.println(i + " : " + listaFaltosos.get(i).getNome());
				}
				
				
				
				aula.setListaFaltosos(listaFaltosos);

				aula.setListaPresentes(listaPresentes);

				listaTodos.add(aula);
			}
		}

		return listaTodos;

	}

}
